﻿namespace PhoneUtils.Services
{
    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;

    /// <summary>
    /// Navigation serice interface. Extracted from <see cref="PhoneApplicationFrame"/>
    /// </summary>
    public interface INavigationService
    {
        event NavigatedEventHandler Navigated;

        event NavigatingCancelEventHandler Navigating;

        event EventHandler<ObscuredEventArgs> Obscured;

        bool CanGoBack { get; }

        bool RecoveredFromTombstoning { get; set; }

        bool Navigate(Uri source);

        void GoBack();

        void UpdateTombstonedPageTracking(Uri pageUri);

        bool DoesPageNeedtoRecoverFromTombstoning(Uri pageUri);
    }
}
